package com.poly.flowable.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.poly.flowable.domain.SysForm;
import com.poly.flowable.pojo.dto.FormFieldDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 流程表单Mapper接口
 *
 * @author Yang huijing
 * @date 2021-03-30
 */
public interface SysFormMapper extends BaseMapper<SysForm> {
    /**
     * 查询流程表单
     *
     * @param formId 流程表单ID
     * @return 流程表单
     */
    SysForm selectSysFormById(Long formId);

    /**
     * 查询流程表单列表
     *
     * @param sysForm 流程表单
     * @return 流程表单集合
     */
    List<SysForm> selectSysFormList(SysForm sysForm);

    /**
     * 新增流程表单
     *
     * @param sysForm 流程表单
     * @return 结果
     */
    int insertSysForm(SysForm sysForm);

    /**
     * 修改流程表单
     *
     * @param sysForm 流程表单
     * @return 结果
     */
    int updateSysForm(SysForm sysForm);

    /**
     * 删除流程表单
     *
     * @param formId 流程表单ID
     * @return 结果
     */
    int deleteSysFormById(Long formId);

    /**
     * 批量删除流程表单
     *
     * @param formIds 需要删除的数据ID
     * @return 结果
     */
    int deleteSysFormByIds(Long[] formIds);


    /**
     * 检查表格数据是否存在
     *
     * @param formName --表格名称
     * @return
     */
    Integer existByTableName(@Param("formName") String formName);


    /**
     * 创建MySql表格模型
     *
     * @param formType    --表格类型
     * @param formName    --表格名称
     * @param formComment --表格解释
     * @return
     */
    Integer createTable(@Param("formType") Integer formType, @Param("formName") String formName, @Param("formComment") String formComment, @Param("fieldList") List<FormFieldDTO> fieldList);

    /**
     * 更新MySql表格名称
     *
     * @param oldTableName --旧表名
     * @param newTableName --新表名
     * @param formComment  --表格解释
     * @return
     */
    Integer updateTableName(@Param("oldTableName") String oldTableName, @Param("newTableName") String newTableName, @Param("formComment") String formComment);


    /**
     * 更新字段
     *
     * @param fieldList --字段列表
     * @return
     */
    Integer updateTableField(@Param("tableName") String tableName, @Param("fieldList") List<FormFieldDTO> fieldList);

}
